A database is a collection of logically related data arranged in a predetermined format, such as in tables that contain rows and columns. To access the content of a table in the database, queries according to a standard database query language are submitted to the database system. Queries can be issued to insert new entries into a table of a database (such as to insert a row into the table), modify the content of the table, and delete entries from the table.
In many database systems, tables can be quite large, which consumes large amounts of storage capacity. To enhance storage efficiency, compression can be applied to data stored in database tables. One type of compression is value list compression. With value list compression, frequently occurring data values of a column in a table are determined. For the identified frequently occurring column data values, special encoded values are used in place of respective frequently occurring column data values. The special encoded values are made up of a fixed number of bits (e.g., an 8-bit value, a 16-bit value, etc.) such that they require less storage space than the actual column values the special encoded values represent. Tables compressed in this manner require less storage capacity than un-compressed tables
In a typical database system, various types of operations, such as join operations, can be performed on tables. Computed data generated in a database operation is stored in an intermediate table (also referred to as a “spool table”) or result table. Thus, in a database operation, content of one or more tables (referred to as “parent tables”) is accessed for projection into an intermediate or result table. Conventionally, although value list compression may be applied to one or more parent tables, a technique is generally unavailable to efficiently extend value list compression to an intermediate or result table used in a database operation.